home *** CD-ROM | disk | FTP | other *** search
- /* Sets the edges of the viewport to the specified normalized subpage */
- /* coordinates */
-
- #include "mathfx.h"
-
- void fxvpor(xmin, xmax, ymin, ymax)
- float xmin, xmax, ymin, ymax;
- {
- float spdxmi, spdxma, spdymi, spdyma;
- float vpdxmi, vpdxma, vpdymi, vpdyma;
- int vppxmi, vppxma, vppymi, vppyma;
-
- int nx, ny, cs;
-
- int level;
-
- glev(&level);
- if (level < 1) fatal("Please call FXSTAR before calling FXVPOR.");
- if((xmin>=xmax)||(ymin>=ymax)||(xmin<0.)||
- (ymin<0.)||(xmax>1.)||(ymax>1.))
- fatal("Invalid limits in PLSVPA.");
-
- gsub(&nx,&ny,&cs);
- if ((cs<=0) || (cs>(nx*ny)))
- fatal("Please call FXADV or FXENV to go to a subpage.");
- gspd(&spdxmi,&spdxma,&spdymi,&spdyma);
- vpdxmi = spdxmi + (spdxma - spdxmi) * xmin;
- vpdxma = spdxmi + (spdxma - spdxmi) * xmax;
- vpdymi = spdymi + (spdyma - spdymi) * ymin;
- vpdyma = spdymi + (spdyma - spdymi) * ymax;
- svpd(vpdxmi,vpdxma,vpdymi,vpdyma);
-
- vppxmi = dcpcx(vpdxmi);
- vppxma = dcpcx(vpdxma);
- vppymi = dcpcy(vpdymi);
- vppyma = dcpcy(vpdyma);
- svpp(vppxmi,vppxma,vppymi,vppyma);
- sclp(vppxmi,vppxma,vppymi,vppyma);
- slev(2);
- }
-